home *** CD-ROM | disk | FTP | other *** search
/ Freelog 100 / FreelogNo100-NovembreDecembre2010.iso / Musique / solfege / solfege-win32-3.17.0.exe / {app} / bin / Lib / bsddb / test / test_1413192.py next >
Text File  |  2007-12-10  |  1KB  |  48 lines

  1. # http://bugs.python.org/issue1413192
  2. #
  3. # See the bug report for details.
  4. # The problem was that the env was deallocated prior to the txn.
  5.  
  6. import shutil
  7. import tempfile
  8. import warnings
  9. try:
  10.     # For Pythons w/distutils and add-on pybsddb
  11.     from bsddb3 import db
  12. except ImportError:
  13.     # For Python >= 2.3 builtin bsddb distribution
  14.     from bsddb import db
  15.  
  16. env_name = tempfile.mkdtemp()
  17.  
  18. # Wrap test operation in a class so we can control destruction rather than
  19. # waiting for the controlling Python executable to exit
  20.  
  21. class Context:
  22.  
  23.     def __init__(self):
  24.         self.env = db.DBEnv()
  25.         self.env.open(env_name,
  26.                       db.DB_CREATE | db.DB_INIT_TXN | db.DB_INIT_MPOOL)
  27.         self.the_txn = self.env.txn_begin()
  28.  
  29.         self.map = db.DB(self.env)
  30.         self.map.open('xxx.db', "p",
  31.                       db.DB_HASH, db.DB_CREATE, 0666, txn=self.the_txn)
  32.         del self.env
  33.         del self.the_txn
  34.  
  35.  
  36. warnings.filterwarnings('ignore', 'DBTxn aborted in destructor')
  37. try:
  38.     context = Context()
  39.     del context
  40. finally:
  41.     warnings.resetwarnings()
  42.  
  43. # try not to leave a turd
  44. try:
  45.     shutil.rmtree(env_name)
  46. except EnvironmentError:
  47.     pass
  48.